﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LoA.Shared.Interfaces;
using Microsoft.Xna.Framework;

namespace LoA.CameraEngine.Entities {
	internal interface ICameraProcessor {
		/// <summary>
		/// Perspective aspect ratio. Default value should be overriden by application.
		/// </summary>
		float AspectRatio { get; set; }
		/// <summary>
		/// Perspective field of view.
		/// </summary>
		float FieldOfView { get; set; }
		/// <summary>
		/// Distance to the near clipping plane.
		/// </summary>
		float NearPlaneDistance { get; set; }
		/// <summary>
		/// Distance to the far clipping plane.
		/// </summary>
		float FarPlaneDistance { get; set; }

		Matrix ProjectionMatrix { get; }
		Matrix ViewMatrix { get; }

		void UpdateAspectRatio(double Height, double Width);

		void Update(GameTime gameTime, IInput inputEngine);
	}
}
